টেস্টএনজি (@Test) অ্যানোটেশনের মধ্যে dependsOnMethods অ্যাট্রিবিউট ব্যবহার করে আপনি এক টেস্টকে অন্য টেস্টের উপর নির্ভরশীল (dependent) হিসেবে কনফিগার করতে পারেন। এটি এমন ক্ষেত্রে কার্যকর, যেখানে একটি টেস্ট কেস সফলভাবে সম্পন্ন না হলে অন্য টেস্ট কেস চালানোর প্রয়োজন নেই।
dependsOnMethods এর কাজের প্রক্রিয়া
- যদি নির্ভরশীল টেস্ট (dependent test) সফল হয়, তবে নির্ভরকারী টেস্ট (dependent test) চালানো হবে।
- যদি নির্ভরশীল টেস্ট ব্যর্থ হয়, তবে নির্ভরকারী টেস্ট skip করা হবে।
- একাধিক টেস্টের উপর নির্ভরতা নির্ধারণের জন্য টেস্টের নাম একটি array আকারে ব্যবহার করা যায়।
উদাহরণ: নির্ভরশীল টেস্ট
import org.testng.annotations.Test;
public class DependentTestExample {
@Test
public void loginTest() {
System.out.println("Login test executed successfully.");
}
@Test(dependsOnMethods = {"loginTest"})
public void placeOrderTest() {
System.out.println("Place order test executed successfully.");
}
@Test(dependsOnMethods = {"placeOrderTest"})
public void logoutTest() {
System.out.println("Logout test executed successfully.");
}
}
কোড বিশ্লেষণ:
- loginTest():
এটি একটি স্বাধীন টেস্ট। - placeOrderTest():
এটিloginTestএর উপর নির্ভরশীল।
যদিloginTestসফল হয়, তবে এটি চালানো হবে। - logoutTest():
এটিplaceOrderTestএর উপর নির্ভরশীল।
আউটপুট:
Login test executed successfully.
Place order test executed successfully.
Logout test executed successfully.
যদি loginTest() ব্যর্থ হয়:
Login test executed successfully.
Place order test skipped.
Logout test skipped.
একাধিক টেস্টের উপর নির্ভরতা
আপনি যদি কোনো টেস্টকে একাধিক টেস্টের উপর নির্ভরশীল করতে চান, তাহলে array ব্যবহার করতে পারেন:
@Test(dependsOnMethods = {"testA", "testB"})
public void testC() {
System.out.println("Test C executed.");
}
কোড বিশ্লেষণ:
testC()কেবল তখনই চালানো হবে যখনtestAএবংtestBউভয় সফলভাবে সম্পন্ন হয়।
alwaysRun = true ব্যবহার
কিছু ক্ষেত্রে আপনি নির্ভরশীল টেস্টকে নির্দিষ্টভাবে চালাতে চাইলে alwaysRun = true ব্যবহার করতে পারেন। এটি ব্যর্থ টেস্ট উপেক্ষা করে নির্ভরশীল টেস্ট চালাবে।
@Test(dependsOnMethods = {"testA"}, alwaysRun = true)
public void testB() {
System.out.println("Test B executed regardless of Test A result.");
}
ডিপেনডেন্ট টেস্ট ব্যবহারের সুবিধা
- পরীক্ষা কার্যক্রমের নিয়ন্ত্রণ:
টেস্ট কেসের ক্রমানুসারে সম্পর্ক নির্ধারণ করা যায়। - সময় সাশ্রয়:
ব্যর্থ টেস্টের পরবর্তী নির্ভরশীল টেস্টগুলো skip করে সময় বাঁচানো যায়। - উন্নত টেস্ট কাঠামো:
ডেটা প্রবাহের উপর ভিত্তি করে টেস্ট কেস সাজানো সম্ভব।
সীমাবদ্ধতা
- ডিপেনডেন্ট টেস্ট ব্যবহারে টেস্ট কাঠামো খুব জটিল হতে পারে।
- এক টেস্ট ব্যর্থ হলে পরবর্তী নির্ভরশীল টেস্ট চালানো হবে না, যা কিছু ক্ষেত্রে সমস্যা তৈরি করতে পারে।
সারাংশ
@Test(dependsOnMethods="") ব্যবহার করে আপনি নির্ভরশীল টেস্ট কনফিগার করতে পারেন, যা বড় প্রজেক্টে কার্যক্রমের ধারাবাহিকতা নিশ্চিত করে। এটি বিশেষভাবে কার্যকর, যেখানে একটি নির্দিষ্ট কার্যকলাপ সফল না হলে পরবর্তী কার্যকলাপ অর্থহীন। তবে অত্যধিক নির্ভরতা জটিলতা সৃষ্টি করতে পারে, তাই এটি সাবধানে ব্যবহার করা উচিত।